package Servicios;

import bean.accidente;
import bean.antecedente;
import bean.emp_accid;
import bean.empleado;
import bean.enfermedad;
import bean.ficha;
import bean.habito;
import bean.habito_ficha;
import bean.historial;
import bean.signo;
import dao.d_accidente;
import dao.d_antecedente;
import dao.d_emp_accid;
import dao.d_empleado;
import dao.d_enfermedad;
import dao.d_ficha;
import dao.d_habito;
import dao.d_habito_ficha;
import dao.d_historial;
import dao.d_signo;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;

/**
 *
 * @author Dvid
 */
@WebService(serviceName = "ServiciosSalud")
public class ServiciosSalud {

    /**
     * This is a sample web service operation
     */
    @WebMethod(operationName = "hello")
    public String hello(@WebParam(name = "name") String txt) {
        return "Hello " + txt + " !";
    }

    @WebMethod(operationName = "ResgistroAccidentes")
    public ArrayList RegistroAccidentes(@WebParam(name = "cedula") String cedula) {
        ArrayList listaaccidentes = new ArrayList();
        d_emp_accid conRol = new d_emp_accid();
        d_accidente conAcc = new d_accidente();
        ArrayList listaDatosaccidente = new ArrayList();
        emp_accid empaci = new emp_accid();

        try {
            listaaccidentes = conRol.listadoAccidentesPorEmpleado(cedula);
            for (int i = 0; i < listaaccidentes.size(); i++) {
                empaci = (emp_accid) listaaccidentes.get(i);
                accidente accid = conAcc.buscarAccidente(empaci.getMiaccidente().getId());
                listaDatosaccidente.add(
                        accid.getId() + "/"
                        + accid.getMificha().getId() + "/"
                        + accid.getDescripcion() + "/");
            }
        } catch (SQLException ex) {
            Logger.getLogger(ServiciosEmpleado.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
        return listaaccidentes;
    }

    @WebMethod(operationName = "ResgistroAntecedentes")
    public ArrayList RegistroAntecedentes(@WebParam(name = "cedula") String cedula) {
        ArrayList listaantecedentes = new ArrayList();
        d_antecedente conAnt = new d_antecedente();
        ArrayList listaDatosAntecedente = new ArrayList();
        d_enfermedad conEnf = new d_enfermedad();
        d_empleado conEmp = new d_empleado();
        d_accidente conAcci = new d_accidente();

        try {

            listaantecedentes = conAnt.BuscarAntecedentes(cedula);
            for (int i = 0; i < listaantecedentes.size(); i++) {
                antecedente miantecedente = (antecedente) listaantecedentes.get(i);
                enfermedad mienfermedad = conEnf.buscarEnfermedad(miantecedente.getMienfermedad().getId());
                empleado miempleado = conEmp.buscarEmpleado(miantecedente.getMiempleado().getCedula());

                listaDatosAntecedente.add(
                        mienfermedad.getId() + "/"
                        + mienfermedad.getDescripcion() + "/"
                        + miempleado.getCedula() + "/");
            }

        } catch (SQLException ex) {
            Logger.getLogger(ServiciosEmpleado.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }


        return listaantecedentes;
    }

    @WebMethod(operationName = "ResgistroSignosVitales")
    public ArrayList RegistroSignosVitales(@WebParam(name = "cedula") String cedula) {
        ArrayList listaFichas = new ArrayList();
        d_signo conSigno = new d_signo();
        ArrayList listaDatosAntecedente = new ArrayList();
        d_enfermedad conEnf = new d_enfermedad();
        d_empleado conEmp = new d_empleado();
        d_accidente conAcci = new d_accidente();
        d_historial contHis = new d_historial();
        historial mihitorial = new historial();
        d_ficha contFic = new d_ficha();


        try {
            mihitorial = contHis.buscarHistorial(cedula);
            listaFichas = contFic.buscarFichas(mihitorial.getId());
            for (int i = 0; i < listaFichas.size(); i++) {
                ficha mificha = (ficha) listaFichas.get(i);
                signo misigno = conSigno.buscarSigno(mificha.getMissignosV().getId());


                listaDatosAntecedente.add(
                        misigno.getId() + "/"
                        + misigno.getPulso() + "/"
                        + misigno.getTemperatura() + "/"
                        + mificha.getFecha() + "/");
            }

        } catch (SQLException ex) {
            Logger.getLogger(ServiciosEmpleado.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }


        return listaFichas;
    }
    
    @WebMethod(operationName = "ResgistroNocivos")
    public ArrayList RegistroNocivos(@WebParam(name = "cedula") String cedula) {
        ArrayList listaFichas = new ArrayList();
        d_signo conSigno = new d_signo();
        ArrayList listahabitosnocivos = new ArrayList();
        ArrayList listaHabitos = new ArrayList();
        d_enfermedad conEnf = new d_enfermedad();
        d_empleado conEmp = new d_empleado();
        d_accidente conAcci = new d_accidente();
        d_historial contHis = new d_historial();
        historial mihitorial = new historial();
        d_ficha contFic = new d_ficha();
        d_habito_ficha conthabFic = new d_habito_ficha();
        d_habito conHabi = new d_habito();


        try {
            mihitorial = contHis.buscarHistorial(cedula);
            listaFichas = contFic.buscarFichas(mihitorial.getId());
            for (int i = 0; i < listaFichas.size(); i++) {
                ficha mificha = (ficha) listaFichas.get(i);
                listaHabitos = conthabFic.busquedaHabito_Fichas(mificha.getId());
                habito mihabito = new habito();
                habito_ficha mihf = new habito_ficha();
                for(int j = 0; i < listaHabitos.size(); j++){
                    mihf = (habito_ficha)listaHabitos.get(j);
                    mihabito = conHabi.buscarHabito(mihf.getMiHabito().getId());
                    listahabitosnocivos.add(
                        mihabito.getId() + "/"
                        + mihabito.getDescripcion()+ "/"                        
                        + mificha.getFecha() + "/");
                }
                            
            }

        } catch (SQLException ex) {
            Logger.getLogger(ServiciosEmpleado.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }


        return listaFichas;
    }
    
}
